비트 필드
메모리의 비트를 효율적으로 사용하기 위해 특정한 비트 수를 가진 필드를 정의할 수 있는 구조체의 일종
데이터 구조를 최적화하고, 메모리 사용을 절약하는 데 유용하다
정의
구조체의 멤버 변수
특정 비트 수를 지정하여 메모리를 절약할 수 있는 기능 제공
여러 개의 변수를 하나의 바이트 또는 워드에 배치하여 메모리 낭비를 줄일 수 있다
예시
C 및 C++ 같은 언어에서 특정 필드의 크기를 비트 단위로 설정할 수 있는 구조체 정의에 사용된다
struct Example {
unsigned int field1: 1;
unsigned int field2: 3;
unsigned int field3: 4;
};
package oracle.hcj.constants;
public class Car {
public final static int POWER_WINDOWS = 1;
public final static int POWER_LOCKS = 2;
public final static int SNOW_TIRES = 4;
public final static int STANDARD_TIRES = 8;
public final static int CRUISE_CONTROL = 16;
public final static int CD_PLAYER = 32;
public final static int AIR_CONDITIONING = 64;
private int options;
public Car( ) {
}
public void setOptions(final int options) {
this.options = options;
}
public int getOptions( ) {
return this.options;
}
}
장점
메모리 사용을 효율적으로 유지할 수 있음
비트 조작을 통한 빠른 연산 가능
단점
데이터 접근 속도가 느릴 수 있다
다양한 플랫폼에서 일관된 동작을 보장하기 어려울 수 있다
-> 구조체의 메모리 정렬 방식에 따라 다르게 동작할 수 있기 때문